package com.maijinjie.common.action.dwz;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;

import javax.servlet.http.HttpServletResponse;

import org.apache.poi.ss.usermodel.Workbook;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;

import com.maijinjie.common.action.BaseAction;
import com.maijinjie.common.action.dwz.bean.DwzStatusBean;
import com.maijinjie.common.bean.Pagination;
import com.maijinjie.common.util.JsonUtil;

/**
 * DWZ-UI基本action类
 * @version 1.0
 * @author GhostarX ( 王欣逸 ) 100992995@qq.com
 * @data 2013-9-2 上午11:20:58
 */
public class DwzUIBaseAction extends BaseAction{
	/**
	 * 描述：输出分页信息<br>
	 * 作者：王欣逸 100992995@qq.com<br>
	 * 创建时间：2013年11月16日 下午5:05:30<br>
	 * 版本：v1.0<br>
	 * @param p 分页对象
	 * @param response
	 * @throws JsonGenerationException
	 * @throws JsonMappingException
	 * @throws IOException
	 */
	public void writePagination(Pagination<?> p, HttpServletResponse response) throws JsonGenerationException, JsonMappingException, IOException{
		HashMap<String, Object> resultMap = new HashMap<String, Object>();
		resultMap.put("total", p.getRowCount());
		resultMap.put("rows", null==p.getList()?new ArrayList<HashMap<String, Object>>():p.getList());
		writeTEXT(new ObjectMapper().writeValueAsString(resultMap), response);
	}
	/**
	 * 描述：输出操作成功信息<br>
	 * 作者：王欣逸 100992995@qq.com<br>
	 * 创建时间：2013年11月16日 下午5:05:15<br>
	 * 版本：v1.0<br>
	 * @param msg
	 * @param response
	 * @throws IOException
	 */
	public void writeSuccess(String msg, HttpServletResponse response) throws IOException{
		writeTEXT(JsonUtil.toJson(new DwzStatusBean(200,msg,"","","forward","")), response);
	}
	/**
	 * 描述：输出操作成功信息<br>
	 * 作者：王欣逸 100992995@qq.com<br>
	 * 创建时间：2013年11月16日 下午5:05:15<br>
	 * 版本：v1.0<br>
	 * @param msg
	 * @param response
	 * @throws IOException
	 */
	public void writeSuccessAndRefresh(String msg, String rel, HttpServletResponse response) throws IOException{
		writeTEXT(JsonUtil.toJson(new DwzStatusBean(200,msg,rel,"","","")), response);
	}
	/**
	 * 描述：输出操作成功信息<br>
	 * 作者：王欣逸 100992995@qq.com<br>
	 * 创建时间：2013年11月16日 下午5:05:15<br>
	 * 版本：v1.0<br>
	 * @param msg
	 * @param response
	 * @throws IOException
	 */
	public void writeSuccessAndClose(String msg, String rel, HttpServletResponse response) throws IOException{
		writeTEXT(JsonUtil.toJson(new DwzStatusBean(200,msg,rel,"","closeCurrent","")), response);
	}
	/**
	 * 描述：输出操作成功信息<br>
	 * 作者：王欣逸 100992995@qq.com<br>
	 * 创建时间：2013年11月16日 下午5:05:15<br>
	 * 版本：v1.0<br>
	 * @param msg
	 * @param response
	 * @throws IOException
	 */
	public void writeSuccessAndCloseCurrentDialog(String msg, HttpServletResponse response) throws IOException{
		writeTEXT(JsonUtil.toJson(new DwzStatusBean(200,msg,"","","closeCurrentDialog","")), response);
	}
	/**
	 * 描述：输出操作成功信息<br>
	 * 作者：王欣逸 100992995@qq.com<br>
	 * 创建时间：2013年11月16日 下午5:05:15<br>
	 * 版本：v1.0<br>
	 * @param msg
	 * @param response
	 * @throws IOException
	 */
	public void writeError(String msg, HttpServletResponse response) throws IOException{
		writeTEXT(JsonUtil.toJson(new DwzStatusBean(300,msg,"","","","")), response);
	}
	/**
	 * 描述：输出超时信息<br>
	 * 作者：王欣逸 100992995@qq.com<br>
	 * 创建时间：2013年11月16日 下午5:05:15<br>
	 * 版本：v1.0<br>
	 * @param msg
	 * @param response
	 * @throws IOException
	 */
	public void writeTimeout(String msg, HttpServletResponse response) throws IOException{
		writeTEXT(JsonUtil.toJson(new DwzStatusBean(301,msg,"","","","")), response);
	}
	
	/**
	 * 描述：输出Excel下载信息<br>
	 * 作者：王欣逸 100992995@qq.com<br>
	 * 创建时间：2013年12月16日 下午5:05:15<br>
	 * 版本：v1.0<br>
	 * @param msg
	 * @param response
	 * @throws IOException
	 */
	public void writeDownloadExcelFile(String fileName,Workbook workbook,HttpServletResponse response) throws IOException{
		response.setHeader("Content-type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");  
		response.setHeader("Content-Disposition", "attachment; filename=" + new String(fileName.getBytes("gb2312"), "ISO8859-1")); 
		workbook.write(response.getOutputStream());
		response.getOutputStream().flush();
		response.getOutputStream().close();
	}
	
}
